#include <iostream>
#include <stdio.h>

class CBase
{
	public:
		CBase() {
			member = 1;
			printf("CBase()\r\n");
		}

		virtual ~CBase() {
			printf("~CBase()\r\n");
		}

		virtual void fun1() {
			printf("CBase::fun1()\r\n");
		}

	private:
		int member;
};

class CDerived : public CBase
{
	public:
		CDerived() {
			member = 2;
			printf("CDerived()\r\n");
		}

		~CDerived() {
			printf("~CDerived()\r\n");
		}

		virtual void fun1() {
			printf("CDerived::fun1()\r\n");
		}

		virtual void fun2() {
			printf("CDerived::fun2()\r\n");
		}

	private:
		int member;
};

int main()
{
	CBase *pBase = new CDerived();
	
	pBase->fun1();
	delete pBase;


	return 0;
}

/*
	CBase()
	CDerived()
	CDerived::fun1()
	~CDerived()
	~CBase()
*/

#if 0
int main()
{
 8048790:	55                   	push   %ebp
 8048791:	89 e5                	mov    %esp,%ebp
 8048793:	56                   	push   %esi
 8048794:	53                   	push   %ebx
 8048795:	83 e4 f0             	and    $0xfffffff0,%esp
 8048798:	83 ec 20             	sub    $0x20,%esp
	CBase *pBase = new CDerived();
 804879b:	c7 04 24 0c 00 00 00 	movl   $0xc,(%esp)		// (esp)=0xc
 80487a2:	e8 99 fe ff ff       	call   8048640 <_Znwj@plt>	// new(0xc)
 80487a7:	89 c3                	mov    %eax,%ebx		// ebx=eax
 80487a9:	89 1c 24             	mov    %ebx,(%esp)		// (esp)=ebx
 80487ac:	e8 3d 01 00 00       	call   80488ee <_ZN8CDerivedC1Ev>
 80487b1:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)		// (esp+0x1c)=ebx
	
	pBase->fun1();
 80487b5:	8b 44 24 1c          	mov    0x1c(%esp),%eax	// eax=(esp+0x1c)
 80487b9:	8b 00                	mov    (%eax),%eax	// eax=(eax)
 80487bb:	83 c0 08             	add    $0x8,%eax	// eax+=0x8
 80487be:	8b 00                	mov    (%eax),%eax	// eax=(eax)
 80487c0:	8b 54 24 1c          	mov    0x1c(%esp),%edx	// edx=(esp+0x1c)
 80487c4:	89 14 24             	mov    %edx,(%esp)	// (esp)=edx
 80487c7:	ff d0                	call   *%eax		// eax()
	delete pBase;
 80487c9:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)	// (esp-0x1c)-0x0
 80487ce:	74 14                	je     80487e4 <main+0x54>	// == jump
 80487d0:	8b 44 24 1c          	mov    0x1c(%esp),%eax	// eax=(esp+0x1c)
 80487d4:	8b 00                	mov    (%eax),%eax	// eax=(eax)
 80487d6:	83 c0 04             	add    $0x4,%eax	// eax+=0x4
 80487d9:	8b 00                	mov    (%eax),%eax	// eax=(eax)
 80487db:	8b 54 24 1c          	mov    0x1c(%esp),%edx	// edx=(esp+0x1c)
 80487df:	89 14 24             	mov    %edx,(%esp)	// (esp)=edx
 80487e2:	ff d0                	call   *%eax		// eax()


	return 0;
 80487e4:	b8 00 00 00 00       	mov    $0x0,%eax
 80487e9:	eb 14                	jmp    80487ff <main+0x6f>
 80487eb:	89 c6                	mov    %eax,%esi
		int member;
};

int main()
{
	CBase *pBase = new CDerived();
 80487ed:	89 1c 24             	mov    %ebx,(%esp)	// (esp)=ebx
 80487f0:	e8 0b fe ff ff       	call   8048600 <_ZdlPv@plt>
 80487f5:	89 f0                	mov    %esi,%eax	// eax=esi
 80487f7:	89 04 24             	mov    %eax,(%esp)	// (esp)=eax
 80487fa:	e8 71 fe ff ff       	call   8048670 <_Unwind_Resume@plt>
	pBase->fun1();
	delete pBase;

	return 0;
}   
#endif

#if 0

/*
 * intel
 */
00000000000011e9 <main>:
    11e9:	f3 0f 1e fa          	endbr64 
    11ed:	55                   	push   %rbp
    11ee:	48 89 e5             	mov    %rsp,%rbp
    11f1:	41 54                	push   %r12
    11f3:	53                   	push   %rbx
    11f4:	48 83 ec 10          	sub    $0x10,%rsp
    11f8:	bf 10 00 00 00       	mov    $0x10,%edi	// edi=0x10
    11fd:	e8 ae fe ff ff       	callq  10b0 <_Znwm@plt>	// new(0x10)
    1202:	48 89 c3             	mov    %rax,%rbx	// rbx=rax
    1205:	48 89 df             	mov    %rbx,%rdi	// rdi=rbx
    1208:	e8 7f 01 00 00       	callq  138c <_ZN8CDerivedC1Ev>
    120d:	48 89 5d e8          	mov    %rbx,-0x18(%rbp)	// (rbp-0x18)=rbx
    1211:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    1215:	48 8b 00             	mov    (%rax),%rax	// rax=(rax)
    1218:	48 83 c0 10          	add    $0x10,%rax	// rax+=0x10
    121c:	48 8b 10             	mov    (%rax),%rdx	// rdx=(rax)
    121f:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    1223:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1226:	ff d2                	callq  *%rdx		// rdx()
    1228:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    122c:	48 85 c0             	test   %rax,%rax	// rax&rax
    122f:	74 0f                	je     1240 <main+0x57>	// == jump
    1231:	48 8b 10             	mov    (%rax),%rdx	// rdx=(rax)
    1234:	48 83 c2 08          	add    $0x8,%rdx	// rdx+=0x8
    1238:	48 8b 12             	mov    (%rdx),%rdx	// rdx=(rdx)
    123b:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    123e:	ff d2                	callq  *%rdx		// rdx(rdi)
    1240:	b8 00 00 00 00       	mov    $0x0,%eax	// eax=0
    1245:	eb 1f                	jmp    1266 <main+0x7d>
    1247:	f3 0f 1e fa          	endbr64 
    124b:	49 89 c4             	mov    %rax,%r12	// r12=rax
    124e:	be 10 00 00 00       	mov    $0x10,%esi	// esi=0x10
    1253:	48 89 df             	mov    %rbx,%rdi	// rdi=rbx
    1256:	e8 65 fe ff ff       	callq  10c0 <_ZdlPvm@plt>
    125b:	4c 89 e0             	mov    %r12,%rax
    125e:	48 89 c7             	mov    %rax,%rdi
    1261:	e8 8a fe ff ff       	callq  10f0 <_Unwind_Resume@plt>
    1266:	48 83 c4 10          	add    $0x10,%rsp
    126a:	5b                   	pop    %rbx
    126b:	41 5c                	pop    %r12
    126d:	5d                   	pop    %rbp
    126e:	c3                   	retq   

00000000000012d6 <_ZN5CBaseC1Ev>:
    12d6:	f3 0f 1e fa          	endbr64 
    12da:	55                   	push   %rbp
    12db:	48 89 e5             	mov    %rsp,%rbp
    12de:	48 83 ec 10          	sub    $0x10,%rsp
    12e2:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    12e6:	48 8d 15 4b 2a 00 00 	lea    0x2a4b(%rip),%rdx        # 3d38 <_ZTV5CBase+0x10>
    12ed:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    12f1:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    12f4:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    12f8:	c7 40 08 01 00 00 00 	movl   $0x1,0x8(%rax)	// (rax+0x8)=0x1
    12ff:	48 8d 3d ff 0c 00 00 	lea    0xcff(%rip),%rdi        # 2005 <_ZStL19piecewise_construct+0x1>
    1306:	e8 d5 fd ff ff       	callq  10e0 <puts@plt>
    130b:	90                   	nop
    130c:	c9                   	leaveq 
    130d:	c3                   	retq   

000000000000130e <_ZN5CBaseD1Ev>:
    130e:	f3 0f 1e fa          	endbr64 
    1312:	55                   	push   %rbp
    1313:	48 89 e5             	mov    %rsp,%rbp
    1316:	48 83 ec 10          	sub    $0x10,%rsp
    131a:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    131e:	48 8d 15 13 2a 00 00 	lea    0x2a13(%rip),%rdx        # 3d38 <_ZTV5CBase+0x10>
    1325:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1329:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    132c:	48 8d 3d db 0c 00 00 	lea    0xcdb(%rip),%rdi        # 200e <_ZStL19piecewise_construct+0xa>
    1333:	e8 a8 fd ff ff       	callq  10e0 <puts@plt>	// puts(rdi)
    1338:	90                   	nop
    1339:	c9                   	leaveq 
    133a:	c3                   	retq   
    133b:	90                   	nop

000000000000133c <_ZN5CBaseD0Ev>:
    133c:	f3 0f 1e fa          	endbr64 
    1340:	55                   	push   %rbp
    1341:	48 89 e5             	mov    %rsp,%rbp
    1344:	48 83 ec 10          	sub    $0x10,%rsp
    1348:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    134c:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1350:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1353:	e8 b6 ff ff ff       	callq  130e <_ZN5CBaseD1Ev>
    1358:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    135c:	be 10 00 00 00       	mov    $0x10,%esi	// esi=0x10
    1361:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1364:	e8 57 fd ff ff       	callq  10c0 <_ZdlPvm@plt>
    1369:	c9                   	leaveq 
    136a:	c3                   	retq   
    136b:	90                   	nop

000000000000136c <_ZN5CBase4fun1Ev>:
    136c:	f3 0f 1e fa          	endbr64 
    1370:	55                   	push   %rbp
    1371:	48 89 e5             	mov    %rsp,%rbp	
    1374:	48 83 ec 10          	sub    $0x10,%rsp
    1378:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    137c:	48 8d 3d 95 0c 00 00 	lea    0xc95(%rip),%rdi        # 2018 <_ZStL19piecewise_construct+0x14>
    1383:	e8 58 fd ff ff       	callq  10e0 <puts@plt>
    1388:	90                   	nop
    1389:	c9                   	leaveq 
    138a:	c3                   	retq   
    138b:	90                   	nop

000000000000138c <_ZN8CDerivedC1Ev>:
    138c:	f3 0f 1e fa          	endbr64 
    1390:	55                   	push   %rbp
    1391:	48 89 e5             	mov    %rsp,%rbp
    1394:	53                   	push   %rbx
    1395:	48 83 ec 18          	sub    $0x18,%rsp
    1399:	48 89 7d e8          	mov    %rdi,-0x18(%rbp)	// (rbp-0x18)=rdi
    139d:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    13a1:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    13a4:	e8 2d ff ff ff       	callq  12d6 <_ZN5CBaseC1Ev>
    13a9:	48 8d 15 58 29 00 00 	lea    0x2958(%rip),%rdx        # 3d08 <_ZTV8CDerived+0x10>
    13b0:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    13b4:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    13b7:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    13bb:	c7 40 0c 02 00 00 00 	movl   $0x2,0xc(%rax)	// (rax+0xc)=0x2
    13c2:	48 8d 3d 5e 0c 00 00 	lea    0xc5e(%rip),%rdi        # 2027 <_ZStL19piecewise_construct+0x23>
    13c9:	e8 12 fd ff ff       	callq  10e0 <puts@plt>
    13ce:	eb 1e                	jmp    13ee <_ZN8CDerivedC1Ev+0x62>
    13d0:	f3 0f 1e fa          	endbr64 
    13d4:	48 89 c3             	mov    %rax,%rbx
    13d7:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    13db:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    13de:	e8 2b ff ff ff       	callq  130e <_ZN5CBaseD1Ev>
    13e3:	48 89 d8             	mov    %rbx,%rax	// rax=rbx
    13e6:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    13e9:	e8 02 fd ff ff       	callq  10f0 <_Unwind_Resume@plt>
    13ee:	48 83 c4 18          	add    $0x18,%rsp
    13f2:	5b                   	pop    %rbx
    13f3:	5d                   	pop    %rbp
    13f4:	c3                   	retq   
    13f5:	90                   	nop

00000000000013f6 <_ZN8CDerivedD1Ev>:
    13f6:	f3 0f 1e fa          	endbr64 
    13fa:	55                   	push   %rbp
    13fb:	48 89 e5             	mov    %rsp,%rbp
    13fe:	48 83 ec 10          	sub    $0x10,%rsp
    1402:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    1406:	48 8d 15 fb 28 00 00 	lea    0x28fb(%rip),%rdx        # 3d08 <_ZTV8CDerived+0x10>
    140d:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1411:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    1414:	48 8d 3d 18 0c 00 00 	lea    0xc18(%rip),%rdi        # 2033 <_ZStL19piecewise_construct+0x2f>
    141b:	e8 c0 fc ff ff       	callq  10e0 <puts@plt>
    1420:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1424:	48 89 c7             	mov    %rax,%rdi
    1427:	e8 e2 fe ff ff       	callq  130e <_ZN5CBaseD1Ev>
    142c:	90                   	nop
    142d:	c9                   	leaveq 
    142e:	c3                   	retq   
    142f:	90                   	nop

0000000000001430 <_ZN8CDerivedD0Ev>:
    1430:	f3 0f 1e fa          	endbr64 
    1434:	55                   	push   %rbp
    1435:	48 89 e5             	mov    %rsp,%rbp
    1438:	48 83 ec 10          	sub    $0x10,%rsp
    143c:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    1440:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1444:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1447:	e8 aa ff ff ff       	callq  13f6 <_ZN8CDerivedD1Ev>
    144c:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1450:	be 10 00 00 00       	mov    $0x10,%esi	// esi=0x10
    1455:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1458:	e8 63 fc ff ff       	callq  10c0 <_ZdlPvm@plt>
    145d:	c9                   	leaveq 
    145e:	c3                   	retq   
    145f:	90                   	nop

0000000000001460 <_ZN8CDerived4fun1Ev>:
    1460:	f3 0f 1e fa          	endbr64 
    1464:	55                   	push   %rbp
    1465:	48 89 e5             	mov    %rsp,%rbp
    1468:	48 83 ec 10          	sub    $0x10,%rsp
    146c:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    1470:	48 8d 3d c9 0b 00 00 	lea    0xbc9(%rip),%rdi        # 2040 <_ZStL19piecewise_construct+0x3c>
    1477:	e8 64 fc ff ff       	callq  10e0 <puts@plt>	
    147c:	90                   	nop
    147d:	c9                   	leaveq 
    147e:	c3                   	retq   
    147f:	90                   	nop

0000000000001480 <_ZN8CDerived4fun2Ev>:
    1480:	f3 0f 1e fa          	endbr64 
    1484:	55                   	push   %rbp
    1485:	48 89 e5             	mov    %rsp,%rbp
    1488:	48 83 ec 10          	sub    $0x10,%rsp
    148c:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    1490:	48 8d 3d bb 0b 00 00 	lea    0xbbb(%rip),%rdi        # 2052 <_ZStL19piecewise_construct+0x4e>
    1497:	e8 44 fc ff ff       	callq  10e0 <puts@plt>
    149c:	90                   	nop
    149d:	c9                   	leaveq 
    149e:	c3                   	retq   
    149f:	90                   	nop

/*
 * arm
 */
00000000004009dc <main>:
  4009dc:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  4009e0:	910003fd 	mov	x29, sp
  4009e4:	a90153f3 	stp	x19, x20, [sp, #16]
  4009e8:	d2800200 	mov	x0, #0x10                  	// #16
  4009ec:	97ffffb5 	bl	4008c0 <_Znwm@plt>	// new(0x10)
  4009f0:	aa0003f3 	mov	x19, x0			// x19=x0
  4009f4:	aa1303e0 	mov	x0, x19			// x0=x19
  4009f8:	9400006b 	bl	400ba4 <_ZN8CDerivedC1Ev>
  4009fc:	f90017b3 	str	x19, [x29, #40]		// [x29+40]=x19
  400a00:	f94017a0 	ldr	x0, [x29, #40]		// x0=[x29+40]
  400a04:	f9400000 	ldr	x0, [x0]		// x0=[x0]
  400a08:	91004000 	add	x0, x0, #0x10	// x0=x0+0x10
  400a0c:	f9400001 	ldr	x1, [x0]	// x1=[x0]
  400a10:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400a14:	d63f0020 	blr	x1	
  400a18:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400a1c:	f100001f 	cmp	x0, #0x0
  400a20:	540000e0 	b.eq	400a3c <main+0x60>  // b.none
  400a24:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400a28:	f9400000 	ldr	x0, [x0]	// x0=[x0]
  400a2c:	91002000 	add	x0, x0, #0x8	// x0=x0+0x8
  400a30:	f9400001 	ldr	x1, [x0]	// x1=[x0]
  400a34:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400a38:	d63f0020 	blr	x1		// x1()
  400a3c:	52800000 	mov	w0, #0x0                   	// #0
  400a40:	14000007 	b	400a5c <main+0x80>
  400a44:	aa0003f4 	mov	x20, x0		// x20=x0
  400a48:	d2800201 	mov	x1, #0x10                  	// #16
  400a4c:	aa1303e0 	mov	x0, x19		// x0=x19
  400a50:	97ffff80 	bl	400850 <_ZdlPvm@plt>
  400a54:	aa1403e0 	mov	x0, x20		// x0=x20
  400a58:	97ffff9e 	bl	4008d0 <_Unwind_Resume@plt>
  400a5c:	a94153f3 	ldp	x19, x20, [sp, #16]
  400a60:	a8c37bfd 	ldp	x29, x30, [sp], #48
  400a64:	d65f03c0 	ret

0000000000400ae4 <_ZN5CBaseC1Ev>:
  400ae4:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400ae8:	910003fd 	mov	x29, sp
  400aec:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400af0:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400af4:	9138c001 	add	x1, x0, #0xe30
  400af8:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400afc:	f9000001 	str	x1, [x0]	// [x0]=x1
  400b00:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400b04:	52800021 	mov	w1, #0x1                   	// #1
  400b08:	b9000801 	str	w1, [x0, #8]	// [x0+8]=w1
  400b0c:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b10:	9135c000 	add	x0, x0, #0xd70
  400b14:	97ffff63 	bl	4008a0 <puts@plt>
  400b18:	d503201f 	nop
  400b1c:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400b20:	d65f03c0 	ret

0000000000400b24 <_ZN5CBaseD1Ev>:
  400b24:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400b28:	910003fd 	mov	x29, sp
  400b2c:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400b30:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b34:	9138c001 	add	x1, x0, #0xe30
  400b38:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400b3c:	f9000001 	str	x1, [x0]	// [x0]=x1
  400b40:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b44:	91360000 	add	x0, x0, #0xd80
  400b48:	97ffff56 	bl	4008a0 <puts@plt>
  400b4c:	d503201f 	nop
  400b50:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400b54:	d65f03c0 	ret

0000000000400b58 <_ZN5CBaseD0Ev>:
  400b58:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400b5c:	910003fd 	mov	x29, sp
  400b60:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400b64:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400b68:	97ffffef 	bl	400b24 <_ZN5CBaseD1Ev>
  400b6c:	d2800201 	mov	x1, #0x10                  	// #16
  400b70:	f9400fa0 	ldr	x0, [x29, #24]	x0=[x29+24]
  400b74:	97ffff37 	bl	400850 <_ZdlPvm@plt>
  400b78:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400b7c:	d65f03c0 	ret

0000000000400b80 <_ZN5CBase4fun1Ev>:
  400b80:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400b84:	910003fd 	mov	x29, sp
  400b88:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400b8c:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b90:	91364000 	add	x0, x0, #0xd90
  400b94:	97ffff43 	bl	4008a0 <puts@plt>
  400b98:	d503201f 	nop
  400b9c:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400ba0:	d65f03c0 	ret

0000000000400ba4 <_ZN8CDerivedC1Ev>:
  400ba4:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  400ba8:	910003fd 	mov	x29, sp
  400bac:	f9000bf3 	str	x19, [sp, #16]	// [sp+16]=x19
  400bb0:	f90017a0 	str	x0, [x29, #40]	// [x29+40]=x0
  400bb4:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400bb8:	97ffffcb 	bl	400ae4 <_ZN5CBaseC1Ev>
  400bbc:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400bc0:	91380001 	add	x1, x0, #0xe00
  400bc4:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400bc8:	f9000001 	str	x1, [x0]	// [x0]=x1
  400bcc:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400bd0:	52800041 	mov	w1, #0x2                   	// #2
  400bd4:	b9000c01 	str	w1, [x0, #12]	// [x0+12]=w1
  400bd8:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400bdc:	91368000 	add	x0, x0, #0xda0
  400be0:	97ffff30 	bl	4008a0 <puts@plt>
  400be4:	14000006 	b	400bfc <_ZN8CDerivedC1Ev+0x58>
  400be8:	aa0003f3 	mov	x19, x0
  400bec:	f94017a0 	ldr	x0, [x29, #40]
  400bf0:	97ffffcd 	bl	400b24 <_ZN5CBaseD1Ev>
  400bf4:	aa1303e0 	mov	x0, x19
  400bf8:	97ffff36 	bl	4008d0 <_Unwind_Resume@plt>
  400bfc:	f9400bf3 	ldr	x19, [sp, #16]
  400c00:	a8c37bfd 	ldp	x29, x30, [sp], #48
  400c04:	d65f03c0 	ret

0000000000400c08 <_ZN8CDerivedD1Ev>:
  400c08:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400c0c:	910003fd 	mov	x29, sp
  400c10:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400c14:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400c18:	91380001 	add	x1, x0, #0xe00
  400c1c:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400c20:	f9000001 	str	x1, [x0]	// [x0]=x1
  400c24:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400c28:	9136c000 	add	x0, x0, #0xdb0
  400c2c:	97ffff1d 	bl	4008a0 <puts@plt>
  400c30:	f9400fa0 	ldr	x0, [x29, #24]
  400c34:	97ffffbc 	bl	400b24 <_ZN5CBaseD1Ev>
  400c38:	d503201f 	nop
  400c3c:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400c40:	d65f03c0 	ret

0000000000400c44 <_ZN8CDerivedD0Ev>:
  400c44:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400c48:	910003fd 	mov	x29, sp
  400c4c:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400c50:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400c54:	97ffffed 	bl	400c08 <_ZN8CDerivedD1Ev>
  400c58:	d2800201 	mov	x1, #0x10                  	// #16
  400c5c:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400c60:	97fffefc 	bl	400850 <_ZdlPvm@plt>
  400c64:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400c68:	d65f03c0 	ret

0000000000400c6c <_ZN8CDerived4fun1Ev>:
  400c6c:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400c70:	910003fd 	mov	x29, sp
  400c74:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400c78:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400c7c:	91370000 	add	x0, x0, #0xdc0
  400c80:	97ffff08 	bl	4008a0 <puts@plt>
  400c84:	d503201f 	nop
  400c88:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400c8c:	d65f03c0 	ret

0000000000400c90 <_ZN8CDerived4fun2Ev>:
  400c90:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400c94:	910003fd 	mov	x29, sp
  400c98:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0 
  400c9c:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400ca0:	91376000 	add	x0, x0, #0xdd8
  400ca4:	97fffeff 	bl	4008a0 <puts@plt>
  400ca8:	d503201f 	nop
  400cac:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400cb0:	d65f03c0 	ret
  400cb4:	00000000 	.inst	0x00000000 ; undefined

#endif
